/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.pnp.model;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import oracle.jdbc.OracleTypes;
import pe.gob.pnp.beans.DependenciaDestinoBean;
import pe.gob.pnp.beans.IngresosBean;
import pe.gob.pnp.beans.SalidasBean;
import pe.gob.pnp.beans.TramiteBean;
import pe.gob.pnp.factories.ConnectionPool;

/**
 *
 * @author gcarlos
 */
public class GestionTramiteDocumentario {

    public int iniciarTramiteDocumentario(TramiteBean tramite) throws SQLException {
        int idtramite = 0;
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "{call TRAMDOC.SP_INICIAR_TRAMITEDOC(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setInt(1, tramite.getNdepeOrigen());
            cs.setInt(2, tramite.getNdepeActual());
            cs.setInt(3, tramite.getNusuaCreador());
            cs.setString(4, tramite.getCtramAsunto());
            cs.setString(5, tramite.getCtramFono());
            cs.setString(6, tramite.getCtramHtsige());
            cs.setInt(7, tramite.getNsaliCodigo());
            cs.setInt(8, tramite.getNtipoDocumento());
            cs.setInt(9, tramite.getNdocuNrofolios());
            cs.setInt(10, tramite.getNtramEsnuevo());
            cs.setString(11, tramite.getCdocuNrodocumento());
            cs.setString(12, tramite.getCdocuNrodocumentocompleto());
            cs.setInt(13, tramite.getNpersSobreviviente());
            cs.setInt(14, tramite.getNpersAdministrado());
            cs.setString(15, tramite.getCtisoTiposolicitante());
            cs.setInt(16, tramite.getNdepeExterna());
            cs.setString(17, tramite.getCtramEspecifico());
            cs.setString(18, tramite.getCtramPrioridad());
            cs.setString(19, tramite.getCtramBeneficios());
            cs.registerOutParameter(20, OracleTypes.VARCHAR);
            cs.registerOutParameter(21, OracleTypes.NUMBER);
            cs.execute();
            idtramite = cs.getInt(21);
            cs.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return idtramite;
    }

    public boolean agregarDerivo(int origen, int destino, int usuario, int ingreso, String acciones) throws SQLException {
        boolean flag = false;
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "{call TRAMDOC.SP_AGREGAR_DERIVO(?,?,?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setInt(1, origen);
            cs.setInt(2, destino);
            cs.setInt(3, usuario);
            cs.setInt(4, ingreso);
            cs.setString(5, acciones);
            cs.execute();
            cs.close();
            flag = true;
        } catch (Exception err) {
            err.printStackTrace();
            flag = false;
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return flag;
    }

    public boolean eliminarDerivo(int salida, int usuario) throws SQLException {
        boolean flag = false;
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "SELECT COUNT(NINGR_IDENTIFICADOR) AS CNT ";
            sql += " FROM TRAMDOC.SISMA_INGRESOS ";
            sql += " WHERE NSALI_IDENTIFICADOR = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, salida);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                if (rs.getInt("CNT") == 0) {
                    sql = "UPDATE TRAMDOC.SISMA_SALIDAS";
                    sql += " SET NSALI_ELIMINADO = 1,NUSUA_ELIMINA =?, ";
                    sql += " DSALI_FECHAELIMINACION = SYSDATE";
                    sql += " WHERE NSALI_IDENTIFICADOR =?";
                    ps = conn.prepareStatement(sql);
                    ps.setInt(1, usuario);
                    ps.setInt(2, salida);
                    ps.executeUpdate();
                    flag = true;
                } else {
                    flag = false;
                }
            }
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
            flag = false;
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return flag;
    }

    public List<TramiteBean> obtenerTramiteDocumentario(int tramite) throws SQLException {
        List<TramiteBean> lstTramite = new ArrayList<TramiteBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "SELECT  I.NINGR_IDENTIFICADOR, ";
            sql += " I.NANIO_IDENTIFICADOR,I.NDEPE_ORIGEN,I.NDEPE_IDENTIFICADOR,";
            sql += " TO_CHAR(I.DINGR_FECHACREACION) AS DINGR_FECHACREACION,";
            sql += " I.NUSUA_CREADOR,I.CTRAM_ASUNTO,I.CTRAM_HOJATRAMDOC,";
            sql += " I.CTRAM_TELEFONO1,I.CTRAM_HOJATRAMDOCSIGE,I.NSALI_IDENTIFICADOR,";
            sql += " I.CTRAM_PRIORIDAD,S.NPERS_IDENTIFICADOR,";
            sql += " P.CPERS_APEPATERNO || ' '|| P.CPERS_APEMATERNO || ', ' || P.CPERS_NOMBRE AS ADMINISTRADO,";
            sql += " CASE WHEN S.BSOLI_TIPOSOLICITANTE = 'C' THEN 'CAUSANTE'";
            sql += " WHEN S.BSOLI_TIPOSOLICITANTE = 'S' THEN 'SOBREVIVIENTE'";
            sql += " WHEN S.BSOLI_TIPOSOLICITANTE = 'D' THEN 'DEPENDENCIA EXTERNA'";
            sql += " END AS CTISO_TIPOSOLICITANTE,";
            sql += " CASE WHEN S.BSOLI_TIPOSOLICITANTE = 'C' OR S.BSOLI_TIPOSOLICITANTE = 'S' THEN ";
            sql += " (   SELECT CPERS_APEPATERNO || ' '|| CPERS_APEMATERNO || ', ' || CPERS_NOMBRE ";
            sql += " FROM DIRPEN.PERMA_PERSONA WHERE NPERS_IDENTIFICADOR = S.NSOBR_IDENTIFICADOR)";
            sql += " WHEN S.BSOLI_TIPOSOLICITANTE = 'D' THEN ";
            sql += " ( SELECT CDEPE_NOMBRE FROM DIRPEN.GENMA_DEPENDENCIA WHERE NDEPE_IDENTIFICADOR = S.NDEPE_IDENTIFICADOR)";
            sql += " END AS CSOLI_SOLICITANTE";
            sql += " FROM TRAMDOC.SISMA_INGRESOS I";
            sql += " INNER JOIN TRAMDOC.SISMA_SOLICITANTE S";
            sql += " ON I.NINGR_IDENTIFICADOR = S.NINGR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.PERMA_PERSONA P";
            sql += " ON P.NPERS_IDENTIFICADOR = S.NPERS_IDENTIFICADOR";
            sql += " WHERE I.NINGR_IDENTIFICADOR = ?";

            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, tramite);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                TramiteBean obj = new TramiteBean();
                obj.setNingrIdentificador(rs.getInt("NINGR_IDENTIFICADOR"));
                obj.setNanioIdentificador(rs.getInt("NANIO_IDENTIFICADOR"));
                obj.setNdepeOrigen(rs.getInt("NDEPE_ORIGEN"));
                obj.setNdepeActual(rs.getInt("NDEPE_IDENTIFICADOR"));
                obj.setNusuaCreador(rs.getInt("NUSUA_CREADOR"));
                obj.setCtramAsunto(rs.getString("CTRAM_ASUNTO"));
                obj.setCtramHojaTramDoc(rs.getString("CTRAM_HOJATRAMDOC"));
                obj.setCtramHtsige(rs.getString("CTRAM_HOJATRAMDOCSIGE"));
                obj.setCsoli_solicitante(rs.getString("CSOLI_SOLICITANTE"));
                obj.setCpersAdministrado(rs.getString("ADMINISTRADO"));
                obj.setCtisoTiposolicitante(rs.getString("CTISO_TIPOSOLICITANTE"));
                lstTramite.add(obj);
            }
            rs.close();
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstTramite;
    }

    public List<DependenciaDestinoBean> obtenerDerivosTramite(int tramite) throws SQLException {
        List<DependenciaDestinoBean> lstDerivos = new ArrayList<DependenciaDestinoBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "SELECT  S.NSALI_IDENTIFICADOR,";
            sql += " TO_CHAR(S.DSALI_FECHACREACION,'dd/mm/yyyy') AS DSALI_FECHACREACION,";
            sql += " S.NDEPE_IDENTIFICADOR,S.NDEPE_DESTINO,D.CDEPE_NOMBRE AS CDEPE_DESTINO,";
            sql += " S.NINGR_IDENTIFICADOR, U.CUSUA_USERNAME FROM TRAMDOC.SISMA_SALIDAS S";
            sql += " INNER JOIN TRAMDOC.SISMA_INGRESOS I ";
            sql += " ON I.NINGR_IDENTIFICADOR = S.NINGR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.GENMA_DEPENDENCIA D";
            sql += " ON D.NDEPE_IDENTIFICADOR = S.NDEPE_DESTINO";
            sql += " INNER JOIN DIRPEN.SEGMA_USUARIO U ";
            sql += " ON U.NUSUA_IDENTIFICADOR = S.NUSUA_CREADOR";
            sql += " WHERE S.NINGR_IDENTIFICADOR = ?";
            sql += " AND S.NSALI_ELIMINADO=0";
            sql += " ORDER BY D.CDEPE_NOMBRE";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, tramite);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                DependenciaDestinoBean obj = new DependenciaDestinoBean();
                obj.setNsaliIdentificador(rs.getInt("NSALI_IDENTIFICADOR"));
                obj.setDsaliFechaCreacion(rs.getString("DSALI_FECHACREACION"));
                obj.setNdepeIdentificador(rs.getInt("NDEPE_IDENTIFICADOR"));
                obj.setNdepeDestino(rs.getInt("NDEPE_DESTINO"));
                obj.setCdepeDestino(rs.getString("CDEPE_DESTINO"));
                obj.setNingrIdentificador(rs.getInt("NINGR_IDENTIFICADOR"));
                obj.setCusuaUserName(rs.getString("CUSUA_USERNAME"));
                lstDerivos.add(obj);
            }
            rs.close();
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstDerivos;
    }

    public List<SalidasBean> obtenerSalidasTramite(int dependencia, int usuario, String fecha) throws SQLException {
        List<SalidasBean> lstSalidas = new ArrayList<SalidasBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "SELECT  S.NSALI_IDENTIFICADOR, ";
            sql += " TO_CHAR(S.DSALI_FECHACREACION,'dd/mm/yyyy') AS DSALI_FECHACREACION,";
            sql += " S.NDEPE_IDENTIFICADOR,S.NDEPE_DESTINO,D.CDEPE_NOMBRE AS CDEPE_DESTINO,";
            sql += " S.NINGR_IDENTIFICADOR, U.CUSUA_USERNAME, I.CTRAM_HOJATRAMDOC,";
            sql += " I.CTRAM_ASUNTO,TRAMDOC.F_CSV_BENEFICIOS(I.NINGR_IDENTIFICADOR) AS BENEFICIOS,";
            sql += " TRAMDOC.F_CSV_ACCIONTRAMITE(S.NSALI_IDENTIFICADOR) AS ACCIONES,";
            sql += " PER.CPERS_APEPATERNO || ' ' ||PER.CPERS_APEMATERNO || ' ' || PER.CPERS_NOMBRE AS ADMINISTRADO,";
            sql += " CASE WHEN SOL.BSOLI_TIPOSOLICITANTE='D' THEN";
            sql += " (SELECT D.CDEPE_NOMBRE FROM DIRPEN.GENMA_DEPENDENCIA D ";
            sql += " WHERE D.NDEPE_IDENTIFICADOR = SOL.NDEPE_IDENTIFICADOR)";
            sql += " WHEN SOL.BSOLI_TIPOSOLICITANTE='C' THEN ";
            sql += " (SELECT A.CPERS_APEPATERNO || ' ' ||A.CPERS_APEMATERNO || ' ' || A.CPERS_NOMBRE ";
            sql += " FROM DIRPEN.PERMA_PERSONA A";
            sql += " WHERE A.NPERS_IDENTIFICADOR = SOL.NSOBR_IDENTIFICADOR)";
            sql += " ELSE (SELECT CSOBR_APENOM FROM PERMA_SOBREVIVIENTE ";
            sql += " WHERE NSOBR_IDENTIFICADOR = SOL.NSOBR_IDENTIFICADOR)";
            sql += " END AS CSOLI_SOLICITANTE";
            sql += " FROM TRAMDOC.SISMA_SALIDAS S";
            sql += " INNER JOIN TRAMDOC.SISMA_INGRESOS I ";
            sql += " ON I.NINGR_IDENTIFICADOR = S.NINGR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.GENMA_DEPENDENCIA D";
            sql += " ON D.NDEPE_IDENTIFICADOR = S.NDEPE_DESTINO";
            sql += " INNER JOIN DIRPEN.SEGMA_USUARIO U ";
            sql += " ON U.NUSUA_IDENTIFICADOR = S.NUSUA_CREADOR";
            sql += " INNER JOIN TRAMDOC.SISMA_SOLICITANTE SOL";
            sql += " ON SOL.NINGR_IDENTIFICADOR = I.NINGR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.PERMA_PERSONA PER";
            sql += " ON PER.NPERS_IDENTIFICADOR = SOL.NPERS_IDENTIFICADOR";
            sql += " WHERE S.NDEPE_IDENTIFICADOR = ?";
            sql += " AND S.NUSUA_CREADOR=?";
            sql += " AND S.NSALI_ELIMINADO = '0'";
            sql += " AND TO_CHAR(S.DSALI_FECHACREACION,'dd/mm/yyyy') =?";
            sql += " ORDER BY D.CDEPE_NOMBRE";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, dependencia);
            ps.setInt(2, usuario);
            ps.setString(3, fecha);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                SalidasBean obj = new SalidasBean();
                obj.setNsaliIdentificador(rs.getInt("NSALI_IDENTIFICADOR"));
                obj.setDsaliFechacreacion(rs.getString("DSALI_FECHACREACION"));
                obj.setNdepeIdentificador(rs.getInt("NDEPE_IDENTIFICADOR"));
                obj.setNdepeDestino(rs.getInt("NDEPE_DESTINO"));
                obj.setCdepeDestino(rs.getString("CDEPE_DESTINO"));
                obj.setNingrIdentificador(rs.getInt("NINGR_IDENTIFICADOR"));
                obj.setCusuaUsername(rs.getString("CUSUA_USERNAME"));
                obj.setCtramHojatramdoc(rs.getString("CTRAM_HOJATRAMDOC"));
                obj.setCtramAsunto(rs.getString("CTRAM_ASUNTO"));
                obj.setCbeneBeneficios(rs.getString("BENEFICIOS"));
                obj.setCacciAcciones(rs.getString("ACCIONES"));
                obj.setCpersAdministrado(rs.getString("ADMINISTRADO"));
                obj.setCsoliSolicitante(rs.getString("CSOLI_SOLICITANTE"));
                lstSalidas.add(obj);
            }
            rs.close();
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstSalidas;
    }
    
    
    public List<IngresosBean> obtenerIngresosTramite(int dependencia, int usuario) throws SQLException {
        List<IngresosBean> lstIngresos = new ArrayList<IngresosBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "SELECT I.NINGR_IDENTIFICADOR,I.NANIO_IDENTIFICADOR,I.NDEPE_ORIGEN,";
            sql += " TO_CHAR(I.DINGR_FECHACREACION,'DD/MM/YYYY') AS DINGR_FECHACREACION,";
            sql += " I.NUSUA_CREADOR,I.CTRAM_ASUNTO,I.CTRAM_HOJATRAMDOC,";
            sql += " TRAMDOC.F_CSV_BENEFICIOS(I.NINGR_IDENTIFICADOR) AS BENEFICIOS,";
            sql += " TRAMDOC.F_CSV_ACCIONTRAMITE(I.NINGR_IDENTIFICADOR) AS ACCIONES,";
            sql += " PER.CPERS_APEPATERNO || ' ' ||PER.CPERS_APEMATERNO || ' ' || PER.CPERS_NOMBRE AS ADMINISTRADO,";
            sql += " CASE WHEN SOL.BSOLI_TIPOSOLICITANTE='D' THEN";
            sql += " (SELECT D.CDEPE_NOMBRE FROM DIRPEN.GENMA_DEPENDENCIA D WHERE D.NDEPE_IDENTIFICADOR = SOL.NDEPE_IDENTIFICADOR)";
            sql += " WHEN SOL.BSOLI_TIPOSOLICITANTE='C' THEN";
            sql += " (SELECT A.CPERS_APEPATERNO || ' ' ||A.CPERS_APEMATERNO || ' ' || A.CPERS_NOMBRE FROM DIRPEN.PERMA_PERSONA A";
            sql += " WHERE A.NPERS_IDENTIFICADOR = SOL.NSOBR_IDENTIFICADOR)";
            sql += " ELSE ";
            sql += " (SELECT CSOBR_APENOM FROM PERMA_SOBREVIVIENTE WHERE NSOBR_IDENTIFICADOR = SOL.NSOBR_IDENTIFICADOR)";
            sql += " END AS CSOLI_SOLICITANTE";
            sql += " FROM SISMA_INGRESOS I";
            sql += " INNER JOIN DIRPEN.GENMA_DEPENDENCIA D";
            sql += " ON D.NDEPE_IDENTIFICADOR = I.NDEPE_ORIGEN";
            sql += " INNER JOIN DIRPEN.SEGMA_USUARIO U ";
            sql += " ON U.NUSUA_IDENTIFICADOR = I.NUSUA_CREADOR";
            sql += " INNER JOIN TRAMDOC.SISMA_SOLICITANTE SOL";
            sql += " ON SOL.NINGR_IDENTIFICADOR = I.NINGR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.PERMA_PERSONA PER";
            sql += " ON PER.NPERS_IDENTIFICADOR = SOL.NPERS_IDENTIFICADOR";
            sql += " WHERE ";
            sql += " I.NINGR_IDENTIFICADOR NOT IN (SELECT NINGR_IDENTIFICADOR FROM SISMA_SALIDAS)";
            sql += " AND  I.NDEPE_IDENTIFICADOR = ?";
            sql += " AND I.NUSUA_CREADOR = ?";
            sql += " AND I.NTRAM_ELIMINADO = '0'";
            sql += " ORDER BY CTRAM_HOJATRAMDOC";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, dependencia);
            ps.setInt(2, usuario);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                IngresosBean obj = new IngresosBean();
                obj.setNingridentificador(rs.getInt("NINGR_IDENTIFICADOR"));
                obj.setNanioidentificador(rs.getInt("NANIO_IDENTIFICADOR"));
                obj.setNdepeOrigen(rs.getInt("NDEPE_ORIGEN"));
                obj.setDingrFechacreacion(rs.getString("DINGR_FECHACREACION"));
                obj.setNusuaCreador(rs.getInt("NUSUA_CREADOR"));
                obj.setCtramAsunto(rs.getString("CTRAM_ASUNTO"));
                obj.setCtramHojatramdoc(rs.getString("CTRAM_HOJATRAMDOC"));
                obj.setCbeneBeneficios(rs.getString("BENEFICIOS"));
                obj.setCacciAcciones(rs.getString("ACCIONES"));
                obj.setCpersAdministrado(rs.getString("ADMINISTRADO"));
                obj.setCsoliSolicitante(rs.getString("CSOLI_SOLICITANTE"));
                lstIngresos.add(obj);
            }
            rs.close();
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstIngresos;
    }
    
    
    public List<IngresosBean> buscarTramiteDocumentario(int dependencia, String hojatramite) throws SQLException {
        List<IngresosBean> lstIngresos = new ArrayList<IngresosBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "SELECT  I.NINGR_IDENTIFICADOR,I.NANIO_IDENTIFICADOR,S.NDEPE_IDENTIFICADOR,";
            sql += " D.CDEPE_NOMBRE,TO_CHAR(I.DINGR_FECHACREACION,'DD/MM/YYYY') AS DINGR_FECHACREACION,";
            sql += " I.NUSUA_CREADOR,I.CTRAM_ASUNTO,I.CTRAM_HOJATRAMDOC,";
            sql += " TRAMDOC.F_CSV_BENEFICIOS(I.NINGR_IDENTIFICADOR) AS BENEFICIOS,";
            sql += " TRAMDOC.F_CSV_ACCIONTRAMITE(S.NSALI_IDENTIFICADOR) AS ACCIONES,";
            sql += " PER.CPERS_APEPATERNO || ' ' ||PER.CPERS_APEMATERNO || ' ' || PER.CPERS_NOMBRE AS ADMINISTRADO,";
            sql += " CASE WHEN SOL.BSOLI_TIPOSOLICITANTE='D' THEN";
            sql += " (SELECT D.CDEPE_NOMBRE FROM DIRPEN.GENMA_DEPENDENCIA D WHERE D.NDEPE_IDENTIFICADOR = SOL.NDEPE_IDENTIFICADOR)";
            sql += " WHEN SOL.BSOLI_TIPOSOLICITANTE='C' THEN";
            sql += " (SELECT A.CPERS_APEPATERNO || ' ' ||A.CPERS_APEMATERNO || ' ' || A.CPERS_NOMBRE FROM DIRPEN.PERMA_PERSONA A";
            sql += " WHERE A.NPERS_IDENTIFICADOR = SOL.NSOBR_IDENTIFICADOR)";
            sql += " ELSE (SELECT CSOBR_APENOM FROM PERMA_SOBREVIVIENTE WHERE NSOBR_IDENTIFICADOR = SOL.NSOBR_IDENTIFICADOR)";
            sql += " END AS CSOLI_SOLICITANTE";
            sql += " FROM SISMA_SALIDAS S";
            sql += " INNER JOIN SISMA_INGRESOS I";
            sql += " ON I.NINGR_IDENTIFICADOR = S.NINGR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.GENMA_DEPENDENCIA D";
            sql += " ON D.NDEPE_IDENTIFICADOR = S.NDEPE_IDENTIFICADOR";
            sql += " INNER JOIN TRAMDOC.SISMA_SOLICITANTE SOL";
            sql += " ON SOL.NINGR_IDENTIFICADOR = I.NINGR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.PERMA_PERSONA PER";
            sql += " ON PER.NPERS_IDENTIFICADOR = SOL.NPERS_IDENTIFICADOR";
            sql += " AND S.NSALI_IDENTIFICADOR NOT IN (SELECT NSALI_IDENTIFICADOR FROM SISMA_INGRESOS)";
            sql += " WHERE S.NDEPE_DESTINO= ? ";
            sql += " AND I.NTRAM_ELIMINADO = '0'";
            sql += " AND I.CTRAM_HOJATRAMDOC = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, dependencia);
            ps.setString(2,hojatramite);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                IngresosBean obj = new IngresosBean();
                obj.setNingridentificador(rs.getInt("NINGR_IDENTIFICADOR"));
                obj.setNanioidentificador(rs.getInt("NANIO_IDENTIFICADOR"));
                obj.setNdepeOrigen(rs.getInt("NDEPE_IDENTIFICADOR"));
                obj.setCdepeOrigen(rs.getString("CDEPE_NOMBRE"));
                obj.setDingrFechacreacion(rs.getString("DINGR_FECHACREACION"));
                obj.setNusuaCreador(rs.getInt("NUSUA_CREADOR"));
                obj.setCtramAsunto(rs.getString("CTRAM_ASUNTO"));
                obj.setCtramHojatramdoc(rs.getString("CTRAM_HOJATRAMDOC"));
                obj.setCbeneBeneficios(rs.getString("BENEFICIOS"));
                obj.setCacciAcciones(rs.getString("ACCIONES"));
                obj.setCpersAdministrado(rs.getString("ADMINISTRADO"));
                obj.setCsoliSolicitante(rs.getString("CSOLI_SOLICITANTE"));
                lstIngresos.add(obj);
            }
            rs.close();
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstIngresos;
    }
}
